<%@ include file="/common/taglibs.jsp"%>
<!--分页查询共用的页面-->
<%@ include file="/common/common.jsp"%>
<%@ include file="/common/dateUtil.jsp"%>
<%@ page language="java" pageEncoding="UTF-8"%>

<head>
<script type="text/javascript" src="<%=jsPath%>/jquery/jquery.timers.js"></script><!--定时器-->
<!--测试代码-->
<script type="text/javascript" src="<%=ApplicationPath%>/test/js/alarm/testViewCountAlarmsNums.js"></script>


<script>
/*
功能：


流程：
    
*/


///////////////////////////////////////////////////////全局变量
var params = {};//定义参数保存变量
var debug = true;//定义调试标记，为true则允许输出调试信息，false则不允许

var activeSafeName = "主动安全报警";//定义主动安全报警来源描述数据

var alarmSourceKey = "alarmSource";//用于解析报警统计信息的定义
var alarmSourceNamekey = "alarmSourceName";
var alarmTypeKey = "alarmType";
var alarmTypeNameKey = "alarmTypeName";
var alarmSumsKey = "alarmSums";



////////////////////////////////////////////////////////初始化控件

/*
1.初始化报警来源选择事件
2.初始化分页控件选择事件
3.初始化时间控件双击事件
4.初始化查询、重置、导出按钮的点击事件
*/

//接口，初始化控件
function initDivs(){
    initDataGrid();
    editFitColumsNum(3);//初始化列名
    setAlarmSourceSelectEvent();//设置报警来源选择事件
    setInputStartTime();//开始时间输入框事件
    setInputEndTime();//结束时间输入框事件
    setPageDiv();//设置分页控件
    setBtnQueryAllAlarms();//设置查询按钮
    setBtnResetAllAlarms();//设置重置按钮
    setBtnExportAllAlarms();//设置导出按钮
    
}

function initDataGrid(){
    outDebugInfo("开始设置数据表格");
    $("#countAlarmsNumsDataGrid").datagrid({
        frozenColumns:[[
        { title: '车牌号', field: 'plateNo', align:'center', width: 80, minWidth: 80 },
        { title: '车组', field: 'depName', align:'center', width: 80, minWidth: 80 },
        { title: '报警总数', field: 'totalNum', align:'center', width: 80, minWidth: 80 },
        ]]
        ,
        height:"100%",
        toolbar:"#countAlarmsNumsToolbar",//工具条
        fitColumns:false,//滚动条

        pagination:true,//分页工具栏
		pageList:[15,30,50,100],
        pageSize:15,
        
		rownumbers:true,//行号
		striped:true,//隔行变色
		singleSelect:true,//单选
		checkOnSelect: false,//选中则勾选
        selectOnCheck: false,//勾选则选中
    });

    //设置滚动条
    $(".datagrid-body").css("overflow-x","scroll");//这样，滚动条就显示出来了

    //初始化报警类型信息
    // outDebugInfo("初始化报警类型信息");
    Utility.initAlarmType($("#countAlarmsNumsAlarmType"));
}

//根据数据的数量编辑列数
function editFitColumsNum(countNum){
    outDebugInfo("当前数据最大长度列为：" + countNum);
    var columns = [];
    // [
    //     { title: '车牌号', field: 'plateNo', align:'center', frozen:true, width: 80, minWidth: 80 },
    //     { title: '车组', field: 'depName', align:'center',  frozen:true, width: 80, minWidth: 80 },
    //     { title: '报警总数', field: 'totalNum', align:'center',  frozen:true, width: 80, minWidth: 80 },
    // ];
    for(var i=0 ; i<countNum ; i++){
        var str = alarmSourceNamekey + (i);
        columns.push({ title: '报警来源', field: str, align:'center',width: 100,minWidth: 90 });
        str = alarmTypeNameKey + (i);
        columns.push({ title: '报警类型', field: str, align:'center', width: 100,minWidth: 90 });
        str = alarmSumsKey + (i);
        columns.push({ title: '报警次数', field:str , align:'center',width: 90 ,minWidth: 90});
    }


    


    $("#countAlarmsNumsDataGrid").datagrid({
        columns:[columns],
    });
}


//设置报警来源选择事件
function setAlarmSourceSelectEvent(){
    $("#countAlarmsNumsAlarmSource").combobox({
        onSelect: function (record) {//选择事件
            // outDebugInfo("报警来源选择："+record.text);
            //填充报警类型数据
            Utility.fillAlarmTypes($("#countAlarmsNumsAlarmType"), record.text);
        }
    });
}

//设置分页控件
function setPageDiv(){
    // outDebugInfo("开始设置分页控件选择事件");
    $("#countAlarmsNumsDataGrid").datagrid("getPager").pagination({
        onSelectPage:pageGridOnSelectPage,
    }); 
}

//分页控件选择事件
function pageGridOnSelectPage(pageNumber,pageSize){
	outDebugInfo("选择页面事件触发");
    //获取新的页面参数
    getParams();
    // getPageParams();
    // outDebugInfo(params);
    if (checkParams()) {
        //请求查询数据
        getAjaxData();

    }
};


//设置开始时间输入框双击事件
function setInputStartTime(){
    ///初始化时间
    var now = Utility.today();
	$("#countAlarmsNumsStartTime").val(now + " 00:00:00");
	
    $("#countAlarmsNumsStartTime").dblclick(function(event){
        var timeStr = $("#countAlarmsNumsStartTime").val();
        if(timeStr != ""){
            var strTemp = timeStr.split(" ");
            if(strTemp.length >= 2){
                timeStr = strTemp[0] + " 00:00:00";
                $("#countAlarmsNumsStartTime").val(timeStr);
            }
        }
        // outDebugInfo("当前时间 : "+timeStr);
    });
}


//设置结束时间输入框双击事件
function setInputEndTime(){
    var now = Utility.today();
    $("#countAlarmsNumsEndTime").val(now + " 23:59:59");
    $("#countAlarmsNumsEndTime").dblclick(function(event){
        var timeStr = $("#countAlarmsNumsEndTime").val();
        if(timeStr != ""){
            var strTemp = timeStr.split(" ");
            if(strTemp.length >= 2){
                timeStr = strTemp[0] + " 23:59:59";
                $("#countAlarmsNumsEndTime").val(timeStr);
            }
        }
        // outDebugInfo("当前时间 : "+timeStr);
    });
}


//设置查询按钮点击事件
function setBtnQueryAllAlarms(){
    $("#countAlarmsNumsAtnQuery").click(btnClickQueryCountAlarmsNums);
}

//设置重置按钮点击事件
function setBtnResetAllAlarms(){
    $("#countAlarmsNumsBtnReset").click(btnClickResetCountAlarmsNums);
}

//设置导出按钮点击事件
function setBtnExportAllAlarms(){
    $("#countAlarmsNumsBtnExport").click(btnClickExportCountAlarmsNums);
}


////////////////////////////////////////////////////////初始化数据

//接口，初始化基本数据
function initDatas(){
    fitDepDatas();//填充车组信息
    fitAlarmSourceDatas();//填充报警来源信息
}

//填充车组数据
function fitDepDatas(){
    //创建下拉部门树
    Utility.createDepTree("countAlarmsNumsDepId");
}

//填充报警来源信息
function fitAlarmSourceDatas(){
    Utility.fillAlarmSources($("#countAlarmsNumsAlarmSource"));
}





    
////////////////////////////////////////////////////////////////////公用方法


//选择车组
function doSelectDep()
{
	InfoWindow.selectDep();
}

//设置车组信息回调方法，用于查找数组
function onDepSelected(depId,depName)
{
	$("#countAlarmsNumsDepId").combotree("setValue", depId);
}


//设置页面为显示指定页
function setToPage(num){
    // outDebugInfo("开始显示第" + num + "页");
    var opts = $("#countAlarmsNumsDataGrid").datagrid("options");
	var pager = $("#countAlarmsNumsDataGrid").datagrid("getPager");
	opts.pageNumber = num;
	opts.pageSize=params.pageSize;
	pager.pagination("refresh", {
		pageNumber: num,
		pageSize: opts.pageSize
    });
}

//获取页面参数
function getPageParams(){
    params.pageNumber = $("#countAlarmsNumsDataGrid").datagrid("getPager").data("pagination").options.pageNumber;
	params.pageSize = $("#countAlarmsNumsDataGrid").datagrid("getPager").data("pagination").options.pageSize;
}




//输出调试信息
function outDebugInfo(msg) {
    if (!debug) {
        return;
    }
    var outStr = "viewCountAlarmsNums ----> ";
    if (typeof (msg) != "string") {
        console.log(outStr);
        console.log(msg);
    } else {
        outStr += msg;
        console.log(outStr);
    }
}

//输出错误信息
function outErrorInfo(msg) {
    console.error("viewCountAlarmsNums ----> " + msg);
}










////////////////////////////////////////////////////////重置功能

//重置方法
function btnClickResetCountAlarmsNums(event){
    // outDebugInfo("重置按钮点击事件开始");

    $("#countAlarmsNumsPlateNo").val("");

    var now = Utility.today();
    $("#countAlarmsNumsStartTime").val(now + " 00:00:00");
    $("#countAlarmsNumsEndTime").val(now + " 23:59:59");

    $("#countAlarmsNumsDepId").combotree("setValue", 0);
    $("#countAlarmsNumsAlarmSource").combobox("select", "-1");
    $("#countAlarmsNumsAlarmType").combobox("select", "-1");
}




////////////////////////////////////////////////////////查询功能

/*
1.首先获取参数
    如果参数校验正确，则继续，如果参数校验不正确，则提示信息
2.初始化页面，设置为第一页
3.发送数据请求，锁页面
4.接收到响应数据，如果响应正确，则加载数据，如果响应错误，则提示信息
5.解锁页面，恢复可操作状态

*/

//接口
//查询按钮点击事件
function btnClickQueryCountAlarmsNums(event){
    // outDebugInfo("查询按钮点击事件开始");
    // outDebugInfo(event);
    getParams();//获取参数
    if (checkParams()) {
        params.pageNumber = 1;

        //初始化控件为第一页
        setToPage(1);

        getAjaxData();//请求数据

    }
}



//获取参数
/*
车牌号，车组，报警来源，报警类型，开始时间，结束时间，
*/
function getParams(){
    //初始化参数为空
    params = {};
    getBasicParams();//获取基本的参数
    getPageParams();//获取页面参数
    getAlarmParams();//获取报警类型和报警来源参数

    outDebugInfo("params=");
    outDebugInfo(params);
}


//获取时间，组织部门，车牌号参数
function getBasicParams(){
    //获取基本查询信息
    var plateNo = $("#countAlarmsNumsPlateNo").val();
    if(plateNo != ""){
        params.plateNo = plateNo;
    }
    
	
	params.startTime = $("#countAlarmsNumsStartTime").val();//开始时间
	params.endTime = $("#countAlarmsNumsEndTime").val();//结束时间

	//获取选择树种选中的类型
    var treeSelected = $("#countAlarmsNumsDepId").combotree("tree").tree("getSelected");
	
    if(treeSelected!= null){
		var depIdTemp = treeSelected.id;
		// outDebugInfo("depIdTemp="+depIdTemp);
		try {
			depIdTemp = parseInt(depIdTemp);
		} catch (error) {
			outErrorInfo("获取查询条件中转换错误"+error);
		}
		if(depIdTemp != undefined){
			params.depId=depIdTemp;//获取depId
		}else{
			params.depId=0;
		}
		
    }
}




/*
获取报警来源和报警类型参数
1.首先判断alarmType，
    如果alarmType选中的值为请选择，那么为默认当前来源全选，只判断alarmSource(其他用户自定义输入会校验不通过)
        如果alarmSource为合法值，则
    如果alarmType是选中的值，那么获取alarmSource和alarmType，如果值不为空，则添加参数，如果为空，则提醒用户重新选择
*/
//获取报警来源和报警类型参数
function getAlarmParams(){
    try {
        //从window.localStorage 获取保存的数据，并还原为数组对象
        var alarmSourceList = window.localStorage.getItem("alarmSourceList");
        alarmSourceList = JSON.parse(alarmSourceList);
        if(alarmSourceList.length <= 0 )//如果列表获取错误，则直接返回
        {
            return;
        }
                
        var alarmSourceText = $("#countAlarmsNumsAlarmSource").combobox("getText");
        var alarmSourceValue = $("#countAlarmsNumsAlarmSource").combobox("getValue");
        var alarmTypeValue = $("#countAlarmsNumsAlarmType").combobox("getValue");
        // console.log("alarmSourceValue=" + alarmSourceValue);
        // console.log("alarmTypeValue=" + alarmTypeValue);
        if(alarmTypeValue>-1){
            //选择了合法的报警类型
            var temp = alarmSourceList[alarmTypeValue];//直接获取值
            params.alarmSource = temp.alarmSource;
            params.alarmType = temp.alarmType;
        }else{
            if (alarmSourceValue > -1) {//选择了值
                if (alarmSourceText != activeSafeName) {
                    //不为主动安全报警
                    var temp = alarmSourceList[alarmSourceValue];//直接获取值
                    params.alarmSource = temp.alarmSource;
                }else{
                    //选择了报警来源
                    params.alarmSourceList =Utility.getAlarmSourceValues(activeSafeName);
                }
            }//未选择，默认全选,不需要赋值
        }   
    } catch (error) {
        outErrorInfo("获取报警来源和报警类型参数错误:"+error);
    }
    
}



/*
校验数据
    1.校验车牌号
    2.校验时间
*/
function checkParams(){
    var returnFlg = true;
    if(params != undefined){
        //校验车牌号，最多10位
        if(params.plateNo != undefined){
            if(params.plateNo.length > 10){
                alert("车牌号输入非法!")
                returnFlg = false;
            }
        }
        //校验时间
        var iHours = Utility.getDiffDay(Utility.stringToDate(params.startTime),Utility.stringToDate(params.endTime));
        if(iHours < 0){
            alert("结束时间应大于开始时间，请输入正确的结束时间！")
            returnFlg = false;
        }

    }else{
        returnFlg = false;
    }

    return returnFlg;
}




/*
请求ajax数据


请求ajax数据


请求ajax数据
*/
function getAjaxData(){
    var jsonData = JSON.stringify(params);
    var url = "<%=ApplicationPath%>/activeSafeAlarm/getCountAlarmsNumsPagedatas.action";
    // console.log(jsonData);
    outDebugInfo("开始请求数据......");
    Utility.showLoading();//添加遮罩
    Utility.getAjaxData(url,jsonData,function(data){
            outDebugInfo("接收数据->");
			outDebugInfo(data);
            Utility.hideLoading();//解除遮罩效果
            formatAjaxData(data.data);
            $("#countAlarmsNumsDataGrid").datagrid('loadData',data.data);//绑定数据
            refreshPageDiv();
    });
}


/*
重新刷新分页按钮信息
*/
function refreshPageDiv(){
    setPageDiv();
    var num = params.pageNumber;
    // outDebugInfo(num);
    setToPage(num);
}



/*
解析查询到的数据
*/
function formatAjaxData(data){
    // outDebugInfo("开始解析获取的数据");
    // outDebugInfo(data.rows);
    if(data.rows != undefined){
        if(data.rows.length > 0){
            data.maxCount = 0;
            // outDebugInfo("开始循环解析...");
            $.each(data.rows,function(index,rowData){
                if(rowData.alarmInfos != undefined){
                    // outDebugInfo("开始添加第" + index + "个分解信息");
                    // rowData.alarmTemps = [''];
                    getAlarmInfos(data,rowData); 
                }
            });//结束循环单条数据

            //编辑列数
            // outDebugInfo("当前最大列数为："+ data.maxCount);
            editFitColumsNum(data.maxCount);
            
        }
    }
}




//解析报警统计数据
function getAlarmInfos(data,rowData){
    var infos = rowData.alarmInfos.split(',');
    if (infos.length > 0) {
        // rowData.alarmTemps = [];
        if(infos.length > 0){
            //寻找最多的数量
            // outDebugInfo("当前列的长度： " + infos.length)
            if(infos.length > data.maxCount){
                data.maxCount = infos.length;
            }

            //解析单个报警统计
            $.each(infos, function (i, info) {
                var temps = info.split("-");
                if (temps.length > 2) {
                    var key = alarmSourceKey + i;
                    rowData[key] = temps[0];
                    key = alarmSourceNamekey + i;
                    rowData[key] = Utility.getOneAlarmSourceName(temps[0]);
                    key = alarmTypeKey + i;
                    rowData[key] = temps[1];
                    key = alarmTypeNameKey + i;
                    rowData[key] = Utility.getOneAlarmTypeName(temps[0], temps[1]);
                    key = alarmSumsKey + i;
                    rowData[key] = temps[2];
                }
            });//结束循环单个报警拆分的数组
        }
        
    }
}






//数据列报警来源格式化
function formatAlarmSource(value, rowData, rowIndex){
    var alarmSourceTemp = rowData.alarmSource;
    var alarmTypeTemp = rowData.alarmType;
    if (alarmSourceTemp != null && alarmTypeTemp != null) {
        var dataTemp = Utility.getOneAlarmSourceData(alarmSourceTemp,alarmTypeTemp);//根据报警类型和报警来源获取单条数据
        if(dataTemp != null){
            return dataTemp.alarmSourceName;
        }
    }
}

//数据列报警类型格式化
function formatAlarmType(value, rowData, rowIndex){
    var alarmSourceTemp = rowData.alarmSource;
    var alarmTypeTemp = rowData.alarmType;
    if (alarmSourceTemp != null && alarmTypeTemp != null) {
        var dataTemp = Utility.getOneAlarmSourceData(alarmSourceTemp,alarmTypeTemp);
        if(dataTemp != null){
            return dataTemp.alarmTypeName;
        }
    }
}



////////////////////////////////////////////////////////导出功能

//导出按钮事件方法
function btnClickExportCountAlarmsNums(event){
    exportExcel();
}
function exportExcel(){
    try {
        outDebugInfo("开始导出报警次数统计文档");
		outDebugInfo(params);
		if (params.alarmSource != undefined) {
			$("#alarmSource").val(params.alarmSource);
		}
		if (params.alarmType != undefined) {
			$("#alarmType_1").val(params.alarmType);
		}
		if (params.alarmSourceList != undefined) {
			$("#alarmSourceList").val(JSON.stringify(params.alarmSourceList));
		}
		$("#countAlarmsNumsQueryForm").attr("target", "_blank"); //弹屏下载
		$("#countAlarmsNumsQueryForm").submit();
		$("#countAlarmsNumsQueryForm").attr("target", "");
	} catch (error) {
		outErrorInfo("导出错误："+error);
	}
}


////////////////////////////////////////////////////////页面加载完成后调用方法
$(document).ready(function () {
    //初始化控件
    initDivs();
    
    //初始化数据
    initDatas();
    
    //测试方法
    // testClass.setTestInfoDiv('testInfo');//设置输出控件,不设置则不输出到页面
    // testClass.startTest();//开始测试
});

// outDebugInfo("开始...............");
</script>


</head>
<body>
<div id="countAlarmsNumsToolbar">
    <form id="countAlarmsNumsQueryForm" action="<%=ApplicationPath%>/export.action">
        <input type="hidden" name="queryId" value="activeSafeAlarm.selectCountAlarmsNumsReportPageDatas" />
        <input type="hidden" name="fileName" value="报警次数统计报表" />
        <input type="hidden" id="alarmType_1" name="alarmType" value="" />
        <input type="hidden" id="alarmSource" name="alarmSource" value="" />
        <input type="hidden" id="alarmSourceList" name="alarmSourceList" value="" />

        <table class="TableBlock" style="width:100%;">
            <tr>
                <td>
                    <div>
                        <span>车牌号码:</span>
                        <input id="countAlarmsNumsPlateNo" type="text" name="plateNo" style="width:170px;">
                    </div>
                </td>
                <td>
                    <div>
                        <span>车组名称:</span>
                        <select id="countAlarmsNumsDepId" name="depId" style="width:170px;"></select>
                        <a id="btnSelectVehicle" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-search'"
                            onclick="doSelectDep();"></a>
                    </div>

                </td>
                <td>
                    <div>
                        <span>报警来源:</span>
                        <select id="countAlarmsNumsAlarmSource" style="width:150px;"></select>
                    </div>
                </td>
                <td>
                    <div>
                        <span>报警类型:</span>
                        <select id="countAlarmsNumsAlarmType" style="width:150px;"></select>
                    </div>
                </td>
            </tr>
            <tr>
                <td>
                    <div>
                        <span>开始时间:</span>
                        <input type="text" name="startTime" id="countAlarmsNumsStartTime" class="datetimepicker" style="width:170px;" />
                    </div>
                </td>
                <td>
                    <div>
                        <span>结束时间:</span>
                        <input type="text" name="endTime" id="countAlarmsNumsEndTime" class="datetimepicker" style="width:170px;" />
                    </div>
                </td>
                <td colspan="2" align="left">
                    <a id="countAlarmsNumsAtnQuery" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-search'">查询</a>&nbsp;
                    <a id="countAlarmsNumsBtnReset" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-clear'">重置</a>&nbsp;
                    <a id="countAlarmsNumsBtnExport" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-excel'">导出</a>
                </td>
            </tr>
        </table>
    </form>
</div>

<table id="countAlarmsNumsDataGrid"></table>

</body>